home *** CD-ROM | disk | FTP | other *** search
- *** PORT/db/recno/rec_open.c.orig 1993/10/13 02:01:31
- --- PORT/db/recno/rec_open.c 1993/10/13 02:20:47
- ***************
- *** 159,167 ****
- --- 159,182 ----
- SET(t, R_EOF);
- else {
- t->bt_msize = sb.st_size;
- + /*
- + * hack :
- + *
- + * The Linux kernel mmap() semantics are broken :
- + *
- + * Under Linux, read only private mappings cause write only and read/write
- + * opens to fail with errno=ETXTBSY. Shared read only mappings should work
- + * fine though, but I'm not familiar enough with the code to ascertain that
- + * a MAP_SHARED mapping would be safe so I use the non-mmap'd version
- + * instead.
- + *
- + */
- +
- + #if !defined(linux)
- if ((t->bt_smap = mmap(NULL, t->bt_msize,
- PROT_READ, MAP_PRIVATE, rfd,
- (off_t)0)) == (caddr_t)-1)
- + #endif
- goto slow;
- t->bt_cmap = t->bt_smap;
- t->bt_emap = t->bt_smap + sb.st_size;
-